﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Presentacion.Presentador.VU_07_Gestionar_Esquema_de_Evaluacion_por_Profesor;
using vudu.Presentacion.Contrato.VU_07_Gestionar_Esquema_de_Evaluacion_por_Profesor;
using vudu.ClasesDominio;
using vudu.Logica.Fachada;

namespace vudu.Presentacion.Vista.VU_07_Gestionar_Esquema_de_Evaluacion_por_Profesor
{
    public partial class AgregarEsquema : System.Web.UI.Page, IContratoNuevoEsquemaEvaluacion
    {
        private PresentadorNuevoEsquemaEvaluacion _presentador;
        private List<Evaluacion> _misEvaluaciones = new List<Evaluacion>();
        private Evaluacion evaluacion = new Evaluacion();
        

        protected void Page_Load(object sender, EventArgs e)
        {

            string miRol = (string)Session["TipoRol"];
           if (miRol != "Profesor")
               Response.Redirect("../VU_15 Gestion de Acceso/InicioSistema.aspx");
           EnlaceLogico fachada = (EnlaceLogico)Session["Fachada"];
           Profesor prof = (Profesor)fachada.RolActual;

            _presentador = new PresentadorNuevoEsquemaEvaluacion(this, fachada);
            if (Session["evaluacionesAgregadas"] == null)
                Session["evaluacionesAgregadas"] = _misEvaluaciones;
            else
                _misEvaluaciones = (List<Evaluacion>)Session["evaluacionesAgregadas"];

            if (!Page.IsPostBack)
            {
                
                _presentador.IniciarPantalla();
                _presentador.LlenarListaMaterias(prof);

            }
      
        }

        #region Implementacion del contrato

        public DropDownList Materia
        {
            get { return Materias; }
        }

        public GridView Evaluacion
        {
            get { return EsquemaEvaluacion; }
        }

        public TextBox Nombre
        {
            get { return NombreEvaluacion; }
        }

        public TextBox Porcentaje
        {
            get { return PorcentajeEvaluacion; }
        }

        public TextBox Fecha
        {
            get { return FechaEvaluacion; }
        }

        public DropDownList Tipo
        {
            get { return TipoEvaluacion; }
        }

        public Label Asterisco1
        {
            get { return Label1; }
        }

        public Label Asterisco2
        {
            get { return Label2; }
        }

        public Label Asterisco3
        {
            get { return Label3; }
        }

        public Label Asterisco4
        {
            get { return Label4; }
        }

        public Label Asterisco5
        {
            get { return Label8; }
        }

        public Label MateriaEsquema
        {
            get { return Label9; }
        }

        public Label MateriaEval
        {
            get { return LabelMaterias; }
        }

        public Label Informacion
        {
            get { return InFormacionProfesor; }
        }
        
       public Label Mensaje1
        {
            get { return Label5; }
        }

        public Label Mensaje2
        {
            get { return Label7; }
        }

        public Label NombreEval
        {
            get { return LabelNombre; }
        }

        public Label TipoEval
        {
            get { return LabelTipo; }
        }

        public Label PorcentajeEval
        {
            get { return LabelPorcentaje; }
        }

        public Label FechaEval
        {
            get { return LabelFecha; }
        }

        public Label Error
        {
            get { return Label6; }
        }

        public Panel Primero
        {
            get { return PanelPrimerPaso; }
        }

        public Panel Segundo
        {
            get { return PanelSegundoPaso; }
        }

        public Label Mensaje3
        {
            get { return Label10; }
        }

        #endregion Implementacion del contrato

        protected void Materias_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (_presentador.ValidarMateria())
            {
                Session["idseccion"] = Materias.SelectedValue.ToString();
                Session["evaluacionesAgregadas"] = null;
                _presentador.IniciarPantallaSecuandaria(Materias.SelectedItem.Text.ToString());
            }
            else
            {
                _presentador.Reiniciar(0);
            }
            

        }

        
        protected void AgregarEvaluacion(object sender, EventArgs e)
        {
            if (_presentador.AgregarEvaluacion())
            {
                Evaluacion eval = new Evaluacion();
                eval.Nombre = Nombre.Text;
                eval.Porcentaje = Convert.ToInt32(Porcentaje.Text);
                if ((_presentador.VerificarNombres(eval,_misEvaluaciones)) && (_presentador.VerificarPorcentajes(eval,_misEvaluaciones)))
                {
                int id = Convert.ToInt32(Session["idseccion"]);
                _misEvaluaciones.Add(new Evaluacion(Nombre.Text, TipoEvaluacion.SelectedValue, Convert.ToInt32(PorcentajeEvaluacion.Text), Convert.ToDateTime(FechaEvaluacion.Text), id));
                _presentador.cargarTabla(_misEvaluaciones);
                _presentador.VaciarFormulario();
                Session["evaluacionesAgregadas"] = _misEvaluaciones;
                }
            }
        }

        protected void EsquemaEvaluacion_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void EsquemaEvaluacion_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            EsquemaEvaluacion.PageIndex = e.NewPageIndex;
            _presentador.cargarTabla(_misEvaluaciones);
        }

        protected void CrearEsquemaEvaluacion(object sender, EventArgs e)
        {
            if (_presentador.AgregarEsquemaEvaluacion(_misEvaluaciones))
            {
                EnlaceLogico fachada = (EnlaceLogico)Session["Fachada"];
                Profesor prof = (Profesor)fachada.RolActual;
                
                _presentador.VaciarFormulario();
                _presentador.VaciarTabla();
                Session["evaluacionesAgregadas"] = null;

                _presentador.Reiniciar(1);                
                _presentador.LlenarListaMaterias(prof);
            }
            

        }

        protected void CancelarEvaluacion(object sender, EventArgs e)
        {
            _presentador.Reiniciar(0);
            _presentador.VaciarTabla();
            _presentador.VaciarFormulario();
            Session["evaluacionesAgregadas"] = null;
        }
    }
}